home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 December / 2004-12 CHIP.iso / Narzedzia systemowe / WinRescue / WinRescue 98 5.08.25 / rescue81.exe / CTMOUSE.TXT < prev    next >
Text File  |  2003-01-01  |  12KB  |  287 lines

  1. CuteMouse driver v2.0. Copyright (c) 1997-2002 Nagy Daniel
  2. Release date: 2002/10/01
  3.  
  4.  
  5. License:
  6. --------
  7.  
  8. CuteMouse is released under the terms of the GNU General Public License
  9. (GPL). For further information please read the file COPYING.
  10.  
  11.  
  12. Description:
  13. ------------
  14.  
  15. CuteMouse is a mouse driver which supports many protocols of serial and
  16. PS/2 mice. It can search for a serial mouse at all COM ports or only at
  17. a specified port.
  18.  
  19. CuteMouse supports a new Wheel API. This means that you can write your
  20. applications which use the mouse wheel. For programming details see
  21. WHEELAPI.TXT.
  22.  
  23. An important CuteMouse feature is its small memory footprint: the resident
  24. part (TSR) occupies less than 3.5K. CuteMouse can also install itself in
  25. upper memory, when available, without requiring external utilities such
  26. as the DOS 'lh' (loadhigh) command.
  27.  
  28. CuteMouse supports cursor drawing in all standard graphics and text modes
  29. with any screen size. These are automatically detected whenever the video
  30. mode or the screen size is changed or reset functions are called.
  31.  
  32. You can subscribe to the CuteMouse discussion group at the official
  33. homepage http://cutemouse.sourceforge.net or by sending an empty
  34. email to <cutemouse-subscribe@yahoogroups.com>.
  35.  
  36. CuteMouse is part of the FreeDOS project at http://www.freedos.org
  37.  
  38.  
  39. Details:
  40. --------
  41.  
  42. CTMOUSE supports standard Mouse Systems, Microsoft and Logitech serial
  43. and PS/2 protocols. Also supported are mice with wheel. By default, when
  44. searching for a connected mouse, the PS/2 port is checked first, then all
  45. COM ports are scanned.
  46.  
  47. Option /S, whose syntax is described in the help screen, disables PS/2
  48. support and can specify the COM port to be checked for a mouse connection
  49. and its IRQ line; option /P disables serial protocols. If option /S is
  50. present in the command line, but PS/2 support is also required, then
  51. option /P must also be present.
  52.  
  53. If a COM port number is not specified with the /S option, then CTMOUSE
  54. searches all COM ports. If an IRQ line is not specified with the /S
  55. option, then the default IRQ line value is IRQ4 for COM1/3 and IRQ3
  56. for COM2/4. In the future IRQ autodetection will be added.
  57.  
  58. Option /V reverses default search order, causing CTMOUSE to look for a
  59. serial mouse before checking for the PS/2 device. This can be useful, for
  60. example, on notebooks which have a built-in PS/2 pointing device to enable
  61. use of a serial mouse, when attached. Using option /Y (see below) may also
  62. be required along with /V. Note: option /V enables both serial and PS/2
  63. protocols, so using options /P and /S without arguments along with /V
  64. in the command line is meaningless.
  65.  
  66. For serial mice, CTMOUSE searches all COM ports (or at the port specified
  67. by option /S) for an attached mouse with Microsoft or Logitech protocol.
  68. If no such mouse is found then CTMOUSE installs at the first existing
  69. (or specified) COM port in Mouse Systems mode, whether a mouse is there
  70. or not. (This is because the Mouse Systems protocol defines no detection
  71. sequence). Option /Y in the command line disables Mouse Systems protocol
  72. support and prevents driver installation if no mouse with Microsoft or
  73. Logitech protocol is found. Note: option /Y forces serial mouse search,
  74. but, unlike option /S, doesn't disable PS/2 support.
  75.  
  76. Both PS/2 and plain Microsoft protocols assume a two button mouse but
  77. option /3 in the command line can be used to enable the middle button
  78. if one is present.
  79.  
  80. WARNING: when the middle button of a plain Microsoft mouse is enabled,
  81. pressing left or right button along with the middle button can cause
  82. "middle button state triggering" - i.e. when the middle button is pressed
  83. the driver thinks it is released and vice-versa. This is a peculiarity of
  84. the Microsoft protocol and can't be changed. If button triggering occurs
  85. simply press the left or right button along with the middle button once
  86. again to clear the problem.
  87.  
  88. Option /R, whose syntax is described in the help screen, allows the
  89. preferred sensitivity to be specified for each axis of mouse movements.
  90. These define the relationship between cursor and mouse movement - the
  91. higher the sensitivity, the further the cursor moves for a given mouse
  92. movement. For sensitivity 0 coefficient 1/3 is used, for sensitivity 9
  93. coefficient 3.0 is used.
  94.  
  95. If installing from low memory, CTMOUSE attempts to move itself into upper
  96. memory (UMB) if there is a suitable free UMB block and option /W is not
  97. used. With option /W any external utility can be used to install CTMOUSE
  98. at a specific location. Subsequent CTMOUSE runs simply reset the resident
  99. part to the new command line options, unless the mouse is not found or
  100. option /B or /N is used.
  101.  
  102. When installing, CTMOUSE ignores and hides any present mouse services
  103. unless option /B is used. Option /U in command line can be used to
  104. unload the resident part of CTMOUSE unless driver interrupts have been
  105. intercepted by another program. After successful unloading, CTMOUSE
  106. restores mouse services that were present at installation time.
  107.  
  108. Option /B in the command line cancels CTMOUSE execution if any (including
  109. CTMOUSE itself) mouse services are already present. With option /B CTMOUSE
  110. will not install itself above loaded mouse drivers and will not reset the
  111. resident part to new command line options.
  112.  
  113. In contrast, option /N forces the loading of a new TSR even if CTMOUSE is
  114. already loaded - without this option CTMOUSE will only reset the loaded
  115. resident part. In cases where mouse services are provided by any other
  116. driver or are not present at all, CTMOUSE loads a new TSR even without
  117. option /N - see table below:
  118.  
  119. options        no services    other driver    CTMOUSE loaded
  120. -------        -----------    ------------    --------------
  121. /B        load CTMOUSE    do nothing    do nothing
  122. <default>    load CTMOUSE    load CTMOUSE    update resident part
  123. /N        load CTMOUSE    load CTMOUSE    load new CTMOUSE
  124.  
  125. Option /N is useful for batch files, which load CTMOUSE before some
  126. actions and unload it after.
  127.  
  128. For each event CTMOUSE returns an appropriate exit code which can be used
  129. in "if errorlevel" statements in batch files:
  130.  
  131.     0  PS/2, Microsoft or Logitech mouse found and CTMOUSE installed;
  132.        Unload successful;
  133.        /? option used.
  134.     1  CTMOUSE installed in Mouse Systems mode;
  135.        Unload failed because CTMOUSE was not loaded.
  136.     2  Resident part switched to PS/2, Microsoft or Logitech mode;
  137.        Unload failed because driver interrupts were intercepted.
  138.     3  Resident part switched to Mouse Systems mode.
  139.     4  Mouse services already present (returned for option /B only).
  140.     5  Mouse not found;
  141.        Invalid option used.
  142.  
  143. Together with options /B and /N, this enables creation of complex and
  144. intelligent batch files. For example, the following batch file can be
  145. used to run a program that requires mouse services to be present:
  146.  
  147.     ctmouse/n/y>nul
  148.     if errorlevel 5 echo Mouse not found!
  149.     if errorlevel 5 goto end
  150.     <program> %1 %2 %3 %4 %5 %6 %7 %8 %9
  151.     ctmouse/u>nul
  152.     :end
  153.  
  154. In the previous example, CTMOUSE is loaded before <program> and unloaded
  155. afterwards regardless of whether or not mouse services are already present
  156. (e.g., another mouse driver was loaded). This may not be suitable if every
  157. free byte of memory is important or if CTMOUSE does not support a mouse
  158. that is currently in use. In the following example, CTMOUSE will be
  159. loaded and unloaded only if no mouse services are present:
  160.  
  161.     if "%1"=="@" goto driverloaded
  162.     ctmouse/b/y>nul
  163.     if errorlevel 5 echo Mouse not found!
  164.     if errorlevel 5 goto end
  165.     if errorlevel 2 goto run
  166.  
  167.     call %0 @ %1 %2 %3 %4 %5 %6 %7 %8 %9
  168.     ctmouse/u>nul
  169.     goto end
  170.  
  171.     :driverloaded
  172.     shift
  173.     :run
  174.     <program> %1 %2 %3 %4 %5 %6 %7 %8 %9
  175.     :end
  176.  
  177. Option /B can also be used to manually specify a mouse search sequence.
  178. In the following example, CTMOUSE is installed by the first command that
  179. finds a mouse and the following commands won't affect the resident part:
  180.  
  181.     ctmouse/b/s4/y>nul
  182.     ctmouse/b/p/y>nul
  183.     ctmouse/b/s2/y>nul
  184.  
  185. Use the /? command line option to obtain a help screen with all option
  186. descriptions.
  187.  
  188. The CuteMouse package also includes a utility to detect COM ports
  189. (COMTEST) and a serial protocol analyzer (PROTOCOL). PROTOCOL shows how
  190. mice work and what they send to the computer for each action. PROTOCOL can
  191. even decipher information sent by PnP mice. All output goes through DOS
  192. functions and can be redirected to a file for subsequent analysis or
  193. sending to someone else.
  194.  
  195.  
  196. Compiling:
  197. ----------
  198.  
  199. To assemble the English version of the driver use TASM (or any compatible
  200. assembler) and any linker that can produce a COM file from OBJ files:
  201.  
  202.     copy ctm-en.msg ctmouse.msg
  203.     tasm /m @asmlib.cfg ctmouse.asm
  204.     tlink /t /x ctmouse.obj,ctmouse.exe
  205.     com2exe -s512 ctmouse.exe ctmouse.exe
  206.  
  207. To assemble the serial protocol analyzer:
  208.  
  209.     tasm /m @..\asmlib.cfg protocol.asm
  210.     tlink /t /x protocol.obj
  211.  
  212. To compile or delete temporary files, the MAKE utility also can be used
  213. (see makefile).
  214.  
  215.  
  216. Known problems:
  217. ---------------
  218.  
  219. Symptom: if the mouse is moved when Works 2.0 for DOS or Word 5.5 for DOS
  220.     are redrawing a screen in graphics mode then some parts of screen
  221.     are corrupted.
  222. Cause: these programs don't hide the mouse cursor while drawing on the
  223.     screen and/or don't use the EGA RIL API when changing video
  224.     adapter registers.
  225. Solution: correct the code of these programs; don't move the mouse while
  226.     the screen is being redrawn; future versions of CTMOUSE will
  227.     probably read the VGA adapter registers directly.
  228.  
  229. Symptom: under Windows 3.1 after a mouse reset (INT 33/0000), the graphics
  230.     mouse cursor is shifted by one pixel right/down.
  231. Cause: Windows traps INT 33 calls and for the reset function additionally
  232.     calls the text and graphics cursor define functions with [-1,-1]
  233.     hot spot.
  234. Solution: use 'PUSHF/CALL FAR' sequence instead of 'INT' instruction to
  235.     call INT 33 handler; there probably are some Windows APIs, which
  236.     can be used in CTMOUSE to interact with Windows directly.
  237.  
  238. Symptom: sometimes, under Windows 3.1, the graphics cursor has a black box
  239.     shape. This may also happen after switching between windows.
  240. Cause: probably due to a Windows bug when Windows incorrectly redefines
  241.     the cursor after video mode changes or switching between windows.
  242. Solution: restart the graphics application or switch back and forth
  243.     between windows again; there probably are some Windows APIs,
  244.     which can be used in CTMOUSE to interact with Windows directly.
  245.  
  246. Symptom: unlike Microsoft Mouse driver 8.2, the mouse doesn't work in
  247.     a windowed DOS box of Windows 3.1 with CTMOUSE installed.
  248. Cause: the Microsoft Mouse driver most probably uses an unpublished API to
  249.     interact with Windows.
  250. Solution: currently unknown.
  251.  
  252. Symptom: CTMOUSE fails to detect PS/2 mice under Windows 9x/ME.
  253. Cause: Windows seems unwilling to let a DOS application have access to the
  254.     PS/2 device services.
  255. Solution: currently unknown.
  256.  
  257.  
  258. Credits:
  259. --------
  260.  
  261. (Some names are mentioned in HISTORY).
  262.  
  263. Ralf Brown <ralf@pobox.com>: author of Interrupt List (a great collection
  264.   of system specific information).
  265. Joergen Ibsen / Jibz <jibz@hotmail.com>: author of aPACK (an excellent
  266.   executable packing program); advice about managing executables.
  267.  
  268. Arkady V.Belousov <ark@mos.ru>: bugfixes, optimizations and features.
  269. Matthias Paul <Matthias.Paul@post.rwth-aachen.de>: many ideas and
  270.   advice about interfacing with OS.
  271. Jason Burgon <jason@jayman.demon.co.uk>: bugfixes, features, advice
  272.   about interrupts handling consistency.
  273. NetDave <david@prog.cz>: wheel support idea.
  274. Alain Mouette <alainm@pobox.com>: many ideas and message files.
  275. Robert Riebisch <riebisch@bercom-berlin.de>: mode 13h bugfix.
  276. Fernando Papa Budzyn: automatic loadhigh capability.
  277. Martin <nocash@work.de>: optimizations.
  278. Paul Schubert: much faster PS/2 code.
  279. All who helped with ideas and code.
  280.  
  281.  
  282. Contacts:
  283. ---------
  284.  
  285. mailto:nagyd@users.sourceforge.net
  286. http://cutemouse.sourceforge.net
  287.